// ============================== 导入依赖 ============================== //

import CORE from '@/CORE'
import BaseClass from '@api/efficiency/model/MonitorPointSiteDto'
import DeviceClass from '@api/efficiency/model/MonitorPointSiteDeviceDto'
import API from './API'

const [ELEC, WATER, GAS] = CORE.DICT.ENERGY_TYPE
const TYPE = [
  ...(CORE.MAP.ENERGY_HAS_ELEC ? [ELEC] : []),
  ...(CORE.MAP.ENERGY_HAS_WATER ? [WATER] : []),
  ...(CORE.MAP.ENERGY_HAS_GAS ? [GAS] : []),
]

// ============================== 导出状态集 ============================== //

export default {
  // —————————————————————————————— 常量状态 —————————————————————————————— //

  /**
   * 接口
   */
  API,

  /**
   * 映射
   */
  MAP: {
    WORD: '监测点', // 词语
    tipPass: '绑定设备', // 通过提示
    tipRej: '解绑设备', // 拒绝提示
  },

  /**
   * 字典
   */
  DICT: {
    /**
     * 类型
     */
    TYPE,

    /**
     * 监测点类型
     */
    POINT: [
      [1, '回路', 1],
      [2, '变压器', 1],
      [3, '用水监测', 2],
      [4, '用气监测', 3],
    ],

    /**
     * 所属系统
     */
    SYSTEM: [
      [1, '低压系统'],
      [2, '高压系统'],
    ],
  },

  /**
   * 首要开关
   *
   * 1. 初始化完成时调用
   * 2. 提交后刷新时调用
   */
  MAIN_START: 'startOne', // 'startInfo' 或 'startList' 或 'startOne' 或 ''

  /**
   * 初始参数
   *
   * 1. 初始存在，才能响应
   * 2. CORE.mixStore(store) 时使用
   * 3. setParam() 重置时使用
   * 3. WebSearch 高级查询点重置时使用
   */
  INIT_PARAM: {
    energyType: TYPE[0][0],
  },

  /**
   * 初始单项
   *
   * 1. 初始存在，才能响应
   * 2. setOne() 合并时使用
   * 3. openAdd() 新增时使用
   */
  INIT_ONE: CORE.initObj(BaseClass, {
    noDel: true, // 判断有无删除
    device: CORE.initObj(DeviceClass), // 绑定设备
    deviceList: [ // 关联设备列表
      CORE.initObj(DeviceClass), // 占位行
    ],
  }),
}
